package org.jsola.hr.vo.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;
import org.jsola.hr.constant.convert.*;

import java.util.Date;

import static org.jsola.core.example.BaseExample.E_CREATE_USER_ID;
import static org.jsola.core.example.BaseExample.E_GMT_CREATE;
import static org.jsola.core.example.BaseExample.E_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.E_IS_VALID;
import static org.jsola.core.example.BaseExample.E_MODIFIED_USER_ID;
import static org.jsola.core.example.BaseExample.E_SITE_ID;
import static org.jsola.core.example.BaseExample.N_CREATE_USER_ID;
import static org.jsola.core.example.BaseExample.N_GMT_CREATE;
import static org.jsola.core.example.BaseExample.N_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.core.example.BaseExample.N_IS_VALID;
import static org.jsola.core.example.BaseExample.N_MODIFIED_USER_ID;
import static org.jsola.core.example.BaseExample.N_SITE_ID;
import static org.jsola.hr.example.EmpInfoExample.*;

/**
 *【员工信息】excel导出对象
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class EmpInfoExportVO extends BaseVO {

    private static final long serialVersionUID = 1L;

//    @ExcelProperty(value = N_ID)
//    private String id;
//
//    @ExcelProperty(value = N_USER_ID)
//    private String userId;
//
//    @ExcelProperty(value = N_UNION_ID)
//    private String unionId;
//
//    @ExcelProperty(value = N_PRE_JOIN_DEP)
//    private String preJoinDep;
//
//    @ExcelProperty(value = N_PRE_JOIN_POSITION)
//    private String preJoinPosition;
//
//    @ExcelProperty(value = N_NUMBER)
//    private String number;
//
    @ExcelProperty(value = N_ID)
    private String id;

    @ExcelProperty(value = N_EMP_SOC_STATUS, converter = EmpSocStatusConverter.class)
    private Integer empSocStatus;

    @ExcelProperty(value = N_PLAN_INCREASE_DATE)
    private Date planIncreaseDate;

    @ExcelProperty(value = N_PLAN_STOP_SOC_DATE)
    private Date planStopSocDate;

    @ExcelProperty(value = N_SOC_DATE)
    private Date socDate;

    @ExcelProperty(value = N_STOP_SOC_DATE)
    private Date stopSocDate;

    @ExcelProperty(value = N_SOC_PROG_ID)
    private String socProgId;

    @ExcelProperty(value = N_SEALED_DATE)
    private Date sealedDate;

    @ExcelProperty(value = N_COMPANY_BEGIN_PAY_DATE)
    private Date companyBeginPayDate;

    @ExcelProperty(value = N_INCREASE_DATE)
    private String increaseDate;

    @ExcelProperty(value = N_CERTIFICATE_TYPE, converter = CertificateTypeEnumConverter.class)
    private Integer certificateType;

    @ExcelProperty(value = N_NATIONALITY)
    private String nationality;

    @ExcelProperty(value = N_EMPLOYMENT_TYPE, converter = EmploymentTypeEnumConverter.class)
    private String employmentType;

    @ExcelProperty(value = N_EMP_AGE)
    private Integer empAge;

    @ExcelProperty(value = N_RETIREMENT_AGE)
    private Integer retirementAge;

    @ExcelProperty(value = N_USER_ID)
    private String userId;

    @ExcelProperty(value = N_UNION_ID)
    private String unionId;

    @ExcelProperty(value = N_PRE_JOIN_DEP)
    private String preJoinDep;

    @ExcelProperty(value = N_PRE_JOIN_POSITION)
    private String preJoinPosition;

    @ExcelProperty(value = N_NUMBER)
    private String number;

    @ExcelProperty(value = N_NAME)
    private String name;
//
//    @ExcelProperty(value = N_NAME_PINYIN)
//    private String namePinyin;
//
    @ExcelProperty(value = N_ID_CARD)
    private String idCard;
//
//    @ExcelProperty(value = N_NATION)
//    private String nation;
//
//    @ExcelProperty(value = N_BIRTHDAY)
//    private Date birthday;
//
    @ExcelProperty(value = N_GENDER, converter = GenderEnumConverter.class)
    private Integer gender;

    @ExcelProperty(value = N_CONTRACT_SUBJECT)
    private String contractSubject;

    @ExcelProperty(value = N_PHONE)
    private String phone;
//
//    @ExcelProperty(value = N_EMAIL)
//    private String email;
//
//    @ExcelProperty(value = N_EMP_PHOTO)
//    private String empPhoto;
//
//    @ExcelProperty(value = N_HIGHEST_EDUCATION)
//    private String highestEducation;

    @ExcelProperty(value = N_MARITAL_STATUS, converter = EmpMaritalStatusConverter.class)
    private Integer maritalStatus;

//    @ExcelProperty(value = N_BIRTH_STATUS, converter = EmpBirthStatusConverter.class)
//    private Integer birthStatus;
//
//    @ExcelProperty(value = N_POLITICAL_STATUS, converter = EmpPoliticalStatusConverter.class)
//    private Integer politicalStatus;
//
//    @ExcelProperty(value = N_PARTY_DATE)
//    private Date partyDate;
//
//    @ExcelProperty(value = N_PARTY_SITE)
//    private String partySite;
//
//    @ExcelProperty(value = N_BIRTHPLACE)
//    private String birthplace;
//
//    @ExcelProperty(value = N_NATIVE_LOCATION)
//    private String nativeLocation;
//
//    @ExcelProperty(value = N_REG_TYPE, converter = RegTypeEnumConverter.class)
//    private Integer regType;
//
//    @ExcelProperty(value = N_CURRENT_ADDR_ID)
//    private String currentAddrId;
//
//    @ExcelProperty(value = N_CURRENT_LOCATION)
//    private String currentLocation;
//
//    @ExcelProperty(value = N_COMPANY_ID)
//    private String companyId;
//    @ExcelProperty(value = N_BIRTH_STATUS, converter = EmpBirthStatusConverter.class)
//    private Integer birthStatus;

    @ExcelProperty(value = N_CHANNEL_ID)
    private String channelId;

//    @ExcelProperty(value = N_POLITICAL_STATUS, converter = EmpPoliticalStatusConverter.class)
//    private Integer politicalStatus;

    @ExcelProperty(value = "工资卡卡号")
    private String bankCard;

    @ExcelProperty(value = "银行名称")
    private String bankName;

    @ExcelProperty(value = N_BANK_CARD_BRANCH)
    private String bankCardBranch;

//    @ExcelProperty(value = N_BANK_PLACE_ID)
//    private String bankPlaceId;

    @ExcelProperty(value = "工资卡开户城市")
    private String bankPlace;

//    @ExcelProperty(value = N_SOC_TYPE)
//    private Boolean socType;

    @ExcelProperty(value = N_IS_FIRST_SOC)
    private Boolean isFirstSoc;

    @ExcelProperty(value = N_IS_FIRST_SOC_NAME)
    private String isFirstSocName;

    @ExcelProperty(value = "个人社保账号")
    private String socCard;

    @ExcelProperty(value = N_IS_FIRST_PF)
    private Boolean isFirstPf;

    @ExcelProperty(value = N_IS_FIRST_PF_NAME)
    private String isFirstPfName;

    @ExcelProperty(value = "个人公积金账号")
    private String pfCard;

//    @ExcelProperty(value = N_HEALTH_CONDITION)
//    private String healthCondition;
//
//    @ExcelProperty(value = N_HAS_WEIGHTY_MEDICAL_HIS)
//    private Boolean hasWeightyMedicalHis;
//
//    @ExcelProperty(value = N_JOB_TITLE)
//    private String jobTitle;
//
//    @ExcelProperty(value = N_JOIN_WORK_DATE)
//    private Date joinWorkDate;
//
//    @ExcelProperty(value = N_WORKING_UNIT_NAME)
//    private String workingUnitName;
//
//    @ExcelProperty(value = N_PUTONGHUA_LEVEL)
//    private String putonghuaLevel;
//
//    @ExcelProperty(value = N_SPECIALITY)
//    private String speciality;
//
//    @ExcelProperty(value = N_PRIZE_WINNING)
//    private String prizeWinning;
//
//    @ExcelProperty(value = N_ENGLISH_LEVEL)
//    private String englishLevel;
//
//    @ExcelProperty(value = N_NCRE_LEVEL)
//    private String ncreLevel;
//
//    @ExcelProperty(value = N_TARGET_POST)
//    private String targetPost;
//
//    @ExcelProperty(value = N_ANNEX_ID_CARD)
//    private String annexIdCard;
//
//    @ExcelProperty(value = N_ANNEX_HOUSEHOLD)
//    private String annexHousehold;
//
//    @ExcelProperty(value = N_ANNEX_DIPLOMA)
//    private String annexDiploma;
//
//    @ExcelProperty(value = N_ANNEX_DEGREE)
//    private String annexDegree;
//
//    @ExcelProperty(value = N_ANNEX_PRACTISING)
//    private String annexPractising;
//
//    @ExcelProperty(value = N_ANNEX_MAJOR)
//    private String annexMajor;
//
//    @ExcelProperty(value = N_ANNEX_REWARD)
//    private String annexReward;
//
//    @ExcelProperty(value = N_ANNEX_NO_CRIMINAL)
//    private String annexNoCriminal;
//
//    @ExcelProperty(value = N_ANNEX_BLACK_WHITE_PHOTO)
//    private String annexBlackWhitePhoto;
//
//    @ExcelProperty(value = N_ANNEX_PTH_LEVEL)
//    private String annexPthLevel;
//
//    @ExcelProperty(value = N_ANNEX_ENGLISH_LEVEL)
//    private String annexEnglishLevel;
//
//    @ExcelProperty(value = N_ANNEX_NCRE_LEVEL)
//    private String annexNcreLevel;
//
//    @ExcelProperty(value = N_ANNEX_DRIVING_LICENSE)
//    private String annexDrivingLicense;
//
//    @ExcelProperty(value = N_ANNEX_PERSON_PHOTO)
//    private String annexPersonPhoto;
//
//    @ExcelProperty(value = N_ANNEX_SALARY_CARD)
//    private String annexSalaryCard;
//
//    @ExcelProperty(value = N_ANNEX_SOC_CARD)
//    private String annexSocCard;
//
//    @ExcelProperty(value = N_ANNEX_PF_CARD)
//    private String annexPfCard;
//
//    @ExcelProperty(value = N_ANNEX_LABOR_CONTRACT)
//    private String annexLaborContract;
//
//    @ExcelProperty(value = N_ANNEX_ONB_RESUME)
//    private String annexOnbResume;
//
//    @ExcelProperty(value = N_ANNEX_ONB_CHECKUP)
//    private String annexOnbCheckup;
//
//    @ExcelProperty(value = N_ANNEX_LAST_LEAVE_CERT)
//    private String annexLastLeaveCert;
//
//    @ExcelProperty(value = N_ANNEX_WORK_APPLY)
//    private String annexWorkApply;
//
//    @ExcelProperty(value = N_ANNEX_ADJUST_NOTICE)
//    private String annexAdjustNotice;
//
//    @ExcelProperty(value = N_ANNEX_PERSONAL_CHANGE)
//    private String annexPersonalChange;
//
//    @ExcelProperty(value = N_ANNEX_SOC_TRANSFER)
//    private String annexSocTransfer;
//
//    @ExcelProperty(value = N_ANNEX_PERFORMANCE_REPORT)
//    private String annexPerformanceReport;
//
//    @ExcelProperty(value = N_ANNEX_OTHER_INFOS)
//    private String annexOtherInfos;
//
//    @ExcelProperty(value = N_ANNEX_LEAVE_APPRO)
//    private String annexLeaveAppro;
//
//    @ExcelProperty(value = N_ANNEX_LEAVE_CERT)
//    private String annexLeaveCert;
//
//    @ExcelProperty(value = N_ANNEX_LEAVE_APPLY)
//    private String annexLeaveApply;
//
//    @ExcelProperty(value = N_ANNEX_HANDOVER_TABLE)
//    private String annexHandoverTable;
//
//    @ExcelProperty(value = N_SUPERVISOR)
//    private String supervisor;
//
//    @ExcelProperty(value = N_EMPLOY_TYPE)
//    private Boolean employType;
//
//    @ExcelProperty(value = N_INFORMAL_TYPE)
//    private Integer informalType;
//
//    @ExcelProperty(value = N_FORMAL_TYPE, converter = FormalTypeEnumConverter.class)
//    private Integer formalType;
//
//    @ExcelProperty(value = N_IS_IMPROVE)
//    private Boolean isImprove;

    @ExcelProperty(value = "工作性质", converter = PostTypeConverter.class)
    private Integer postType;

//    @ExcelProperty(value = N_CONTRACTS_STATUS)
//    private Integer contractsStatus;
//
//    @ExcelProperty(value = N_MANAGER_FORM)
//    private Integer managerForm;
//
//    @ExcelProperty(value = N_WORK_CITY_ID)
//    private String workCityId;
//
//    @ExcelProperty(value = N_WORK_CITY)
//    private String workCity;
//
//    @ExcelProperty(value = N_JOIN_FORM_STATUS)
//    private Boolean joinFormStatus;
//
//    @ExcelProperty(value = N_PRE_JOIN_DATE)
//    private Date preJoinDate;

    @ExcelProperty(value = N_JOIN_DATE)
    private Date joinDate;

    @ExcelProperty(value = N_PROBATION, converter = ProbationEnumConverter.class)
    private Integer probation;

    @ExcelProperty(value = N_PROBATION_DAYS)
    private Integer probationDays;

    @ExcelProperty(value = N_TURN_STRAIGHT_DATE)
    private Date turnStraightDate;

//    @ExcelProperty(value = N_LEAVE_DATE)
//    private Date leaveDate;
//
//    @ExcelProperty(value = N_LEAVE_REASON)
//    private String leaveReason;
//
//    @ExcelProperty(value = N_CHANGE_STATUS)
//    private Integer changeStatus;

    @ExcelProperty(value = N_VERIFIED)
    private Boolean verified;

    @ExcelProperty(value = "实名认证(状态)")
    private String verifiedName;

    @ExcelProperty(value = N_STATUS, converter = EmpInfoStatusConverter.class)
    private Integer status;

//    @ExcelProperty(value = N_APPROVAL_STATUS)
//    private Integer approvalStatus;
//
    @ExcelProperty(value = N_APPROVAL_STATUS)
    private Integer approvalStatus;

    @ExcelProperty(value = N_ARRIVAL)
    private Boolean arrival;

    @ExcelProperty(value = N_JOIN_CITY_CODE)
    private String joinCityCode;
//
//    @ExcelProperty(value = N_ARCHIVES_NUMBER)
//    private String archivesNumber;

    @ExcelProperty(value = N_JOIN_CITY_NAME)
    private String joinCityName;

//    @ExcelProperty(value = N_ARCHIVES_REMAKE)
//    private String archivesRemake;
//
//    @ExcelProperty(value = N_RECRUIT_CHANNELS)
//    private String recruitChannels;
//
//    @ExcelProperty(value = N_RETIREMENT_STATUS)
//    private Boolean retirementStatus;
//
//    @ExcelProperty(value = N_RETIREMENT_DATE)
//    private Date retirementDate;
//
//    @ExcelProperty(value = N_RETIREMENT_REMARK)
//    private String retirementRemark;
//
//    @ExcelProperty(value = N_BLOOD_GROUP, converter = BloodGroupEnumConverter.class)
//    private Integer bloodGroup;
//
    @ExcelProperty(value = N_DEP_NAME)
    private String depName;
    @ExcelProperty(value = N_ARCHIVES_REMAKE)
    private String archivesRemake;

    @ExcelProperty(value = N_RECRUIT_CHANNELS)
    private String recruitChannels;

    @ExcelProperty(value = N_RETIREMENT_STATUS)
    private Boolean retirementStatus;

    @ExcelProperty(value = N_RETIREMENT_DATE)
    private Date retirementDate;

    @ExcelProperty(value = N_RETIREMENT_REMARK)
    private String retirementRemark;

    @ExcelProperty(value = N_BLOOD_GROUP, converter = BloodGroupEnumConverter.class)
    private Integer bloodGroup;

    @ExcelProperty(value = N_SALARY_TYPE, converter = SalaryFileTypeEnumConverter.class)
    private Integer salaryType;

    @ExcelProperty(value = N_ALIPAY_ACCOUNT)
    private String alipayAccount;

    @ExcelProperty(value = N_SALARY_RULE_ID)
    private String salaryRuleId;

    @ExcelProperty(value = N_SERVICE_FEE_RULE_ID)
    private String serviceFeeRuleId;

    @ExcelProperty(value = N_REMARK)
    private String remark;

    @ExcelProperty(value = N_TAG)
    private String tag;

    @ExcelProperty(value = N_SITE_ID)
    private String siteId;

    @ExcelProperty(value = N_POSITION_NAME)
    private String positionName;
//
//    @ExcelProperty(value = N_SITE_ID)
//    private String siteId;
//
//    @ExcelProperty(value = N_GMT_CREATE)
//    private Date gmtCreate;
//
//    @ExcelProperty(value = N_CREATE_USER_ID)
//    private String createUserId;
//
//    @ExcelProperty(value = N_GMT_MODIFIED)
//    private Date gmtModified;
//
//    @ExcelProperty(value = N_MODIFIED_USER_ID)
//    private String modifiedUserId;
//
//    @ExcelProperty(value = N_IS_VALID)
//    private Boolean valid;

}

